{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Verify execution count.\n",
    "\n",
    "The next code cell should have empty square brackets on the left, e.g., \"`[ ]`\".  Execute the cell and upon completion there should be a number there; probably \"`[1]`\".  Execute the cell again and verify that the number in the brackets increments by one, e.g., \"`[2]`\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3c954261",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "1+1"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Verify Completions.\n",
    "The next code cell contains the code `Console`. At the end type, `.`. The completions list with properties and methods should be displayed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a1beba1b",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "Console"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the following cell.\n",
    "\n",
    "You'll notice a counter that appears and starts incrementing.  After a second or two, stop the cell.  Your output should look similar to:\n",
    "\n",
    "```\n",
    "5\n",
    "Command cancelled\n",
    "```\n",
    "\n",
    "N.b., the old values (e.g., `1`, `2`, `3`, `4`, etc.) should no longer be displayed, but overwritten."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "607c08c8",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "using System.Threading.Tasks;\n",
    "using Microsoft.DotNet.Interactive;\n",
    "\n",
    "var output = string.Empty.Display(\"text/plain\");\n",
    "var counter = 1;\n",
    "while (!KernelInvocationContext.Current.CancellationToken.IsCancellationRequested)\n",
    "{\n",
    "    await Task.Delay(500, KernelInvocationContext.Current.CancellationToken);\n",
    "    output.Update($\"{counter++}\");\n",
    "}"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next two cells."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4840a9c4",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "var x = 123;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5575d228",
   "metadata": {
    "dotnet_interactive": {
     "language": "html"
    },
    "polyglot_notebook": {
     "kernelName": "html"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "<div id=\"output\">The value is not yet set.</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next two cells.  After execution, the output immediately above each should read:\n",
    "\n",
    "```\n",
    "The value is 123.\n",
    "```\n",
    "\n",
    "And the output below the next cell should display the same value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "abdc83e4",
   "metadata": {
    "dotnet_interactive": {
     "language": "javascript"
    },
    "polyglot_notebook": {
     "kernelName": "javascript"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "#!share --from csharp x\n",
    "document.getElementById(\"output\").innerText = `The value is ${x}.`;\n",
    "console.log(`The value is ${x}.`);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3ace82f7",
   "metadata": {
    "dotnet_interactive": {
     "language": "javascript"
    },
    "polyglot_notebook": {
     "kernelName": "javascript"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "#!set --value @csharp:x --name y\n",
    "y++;\n",
    "document.getElementById(\"output\").innerText = `The value is ${y}.`;\n",
    "console.log(`The value is ${y}.`);"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell. After execution, the output immediately below should be:\n",
    "\n",
    "```\n",
    "javascript\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "59833948",
   "metadata": {
    "dotnet_interactive": {
     "language": "javascript"
    },
    "polyglot_notebook": {
     "kernelName": "javascript"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "const jsKernel = kernel.root.findKernelByName('javascript');\n",
    "console.log(jsKernel.name);"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell. After execution, the output immediately below should be:\n",
    "\n",
    "```\n",
    "[\".NET\",\"csharp\",\"fsharp\",\"html\",\"http\",\"javascript\",\"kql\",\"mermaid\",\"pwsh\",\"sql\",\"value\",\"vscode\",\"webview\"]\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "479f9ac3",
   "metadata": {
    "dotnet_interactive": {
     "language": "javascript"
    },
    "polyglot_notebook": {
     "kernelName": "javascript"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "kernels = Array.from(kernel.root.findKernels(s => true).map(k => k.name)).sort();\n",
    "return kernels;"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell. After execution, the output immediately below should be:\n",
    "\n",
    "```\n",
    "1234\n",
    "```\n",
    "\n",
    "And the `POLYGLOT NOTEBOOK: VARIABLES` window should contain a variable with name `csharpVarFromJs`, value `1234` and kernel Name `csharp`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d14e24d1",
   "metadata": {
    "dotnet_interactive": {
     "language": "javascript"
    },
    "polyglot_notebook": {
     "kernelName": "javascript"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "await kernel.root.send({ commandType: 'SubmitCode', command: { code: 'var csharpVarFromJs = 1234; Console.WriteLine(csharpVarFromJs);', targetKernelName: 'csharp' } });"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell. After execution, the output immediately below should be:\n",
    "\n",
    "```\n",
    "2345\n",
    "```\n",
    "And the `POLYGLOT NOTEBOOK: VARIABLES` window should contain a variable with name `csharpVarFromJsUsingApi`, value `1234` and kernel Name `csharp`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "332b9dfd",
   "metadata": {
    "dotnet_interactive": {
     "language": "javascript"
    },
    "polyglot_notebook": {
     "kernelName": "javascript"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "let command = new polyglotNotebooks.KernelCommandEnvelope(polyglotNotebooks.SubmitCodeType, { code: 'var csharpVarFromJsUsingApi = 2345; Console.WriteLine(csharpVarFromJsUsingApi);', targetKernelName: 'csharp' });\n",
    "await kernel.root.send(command);"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell, the output should be displayed as HTML like so:\n",
    "\n",
    "| Name | Salary |\n",
    " :---|---: |\n",
    "| Developer | 42 |\n",
    "\n",
    "change the renderer using the `...` element, choose the json and the output should look like so:\n",
    "\n",
    "``` json\n",
    "{\"Name\":\"Developer\",\"Salary\":42}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "501dacde",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "var value = new { Name = \"Developer\", Salary = 42 };\n",
    "value.Display(\"application/json\", \"text/html\");"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell, the output should be displayed like so:\n",
    "\n",
    "31.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f93c207a",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "10m + 21.1m"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell. It should fail with the message:\n",
    "```\n",
    "Error: Value 'undefinedVariableName' not found in kernel pwsh\n",
    "2\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e880b0a4",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "#!share --from pwsh undefinedVariableName\n",
    "\n",
    "1+1"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the next cell and verify the following error appears:\n",
    "\n",
    "```\n",
    "input.fsx (1,11)-(1,12) parse error Unexpected token '+' or incomplete expression\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "84da9dd4",
   "metadata": {
    "dotnet_interactive": {
     "language": "fsharp"
    },
    "polyglot_notebook": {
     "kernelName": "fsharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "let x = 1 +"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Complex console output"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The output should look like:\n",
    "\n",
    "<span style=\"color:#00FF00\">this is green</span>\n",
    "\n",
    "this is white\n",
    "\n",
    "<span style=\"color:#FF0000\">this is red</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d3f4ec3a",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "Console.Write(\"\\x1b[38;2;0;255;0m\");\n",
    "Console.WriteLine(\"this is green\");\n",
    "Console.Write(\"\\x1b[0m\");\n",
    "\"this is white\".Display();\n",
    "Console.Error.Write(\"\\x1b[38;2;255;0;0m\");\n",
    "Console.Error.WriteLine(\"this is red\");\n",
    "Console.Error.Write(\"\\x1b[0m\");"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# vscode kernel and user input prompts\n",
    "This cell should prompt the user for input. Type something into the input field. Whatever you typed should be displayed in the output."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "56331cdd",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "var input = await Microsoft.DotNet.Interactive.Kernel.GetInputAsync(\"give me data\");\n",
    "input"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c6fb06aa",
   "metadata": {
    "dotnet_interactive": {
     "language": "fsharp"
    },
    "polyglot_notebook": {
     "kernelName": "fsharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "let input = (task  {\n",
    "                    return! Microsoft.DotNet.Interactive.Kernel.GetInputAsync (\"give me data\")\n",
    "                  }).Result\n",
    "input"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This should prompt you for input."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "88fd88b9",
   "metadata": {
    "dotnet_interactive": {
     "language": "value"
    },
    "polyglot_notebook": {
     "kernelName": "value"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "#!value --from-value @input:wat --name value_from_input"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This should output the thing you typed into the prompt."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d86b6b1b",
   "metadata": {
    "dotnet_interactive": {
     "language": "fsharp"
    },
    "polyglot_notebook": {
     "kernelName": "fsharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "#!share --from value value_from_input\n",
    "value_from_input"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now check the variable explorer. Is the value there in the `value` kernel?"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This should prompt you for input. Type something into the input field. Whatever you typed should be displayed in the output."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "342d3175",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "#!set --name csharpVarFromInput --value @input:\"Please enter a value\"\n",
    "csharpVarFromInput"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Run mermaid markdown:\n",
    "Execute the markadown in the cell, this should produce a graphic visualization."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f7631f97",
   "metadata": {
    "dotnet_interactive": {
     "language": "mermaid"
    },
    "polyglot_notebook": {
     "kernelName": "mermaid"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "mindmap\n",
    "  root((.NET Interactive))\n",
    "    Commands\n",
    "        SubmitCode\n",
    "        Cancel\n",
    "        SendValue\n",
    "    Events\n",
    "        CommandSucceeded\n",
    "        CommandFailed\n",
    "        ValueProduced\n",
    "    Kernels\n",
    "        Kernel\n",
    "        CompositeKernel\n",
    "        ProxyKernel\n",
    "    Directives\n",
    "        Connect\n",
    "            SQL\n",
    "            KQL\n",
    "            Jupyter"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Check this manual scenario:\n",
    "\n",
    "1. `Ctrl+Shift+P` => \"Polyglot Notebook: Create new blank notebook\"\n",
    "2. Select \"Create as .dib\"\n",
    "3. Select \"F#\"\n",
    "4. You should have a new empty notebook named something like \"Untitled-1.dib\" with a single cell of type \"F# (Polyglot Notebook)\".\n",
    "5. Set the cell contents to `1+1` and execute.\n",
    "6. Verify output of `2`.\n",
    "7. Save to disk.\n",
    "8. Open that file in notepad.\n",
    "9. The contents should look like this:\n",
    "\n",
    "   ```\n",
    "   #!meta\n",
    "      {\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[{\"name\":\"fsharp\",\"languageName\":\"F#\",\"aliases\":[\"f#\",\"F#\"]},{\"name\":\"vscode\",\"aliases\":[\"frontend\"]}]}}\n",
    "\n",
    "   #!fsharp\n",
    "\n",
    "   1+1\n",
    "   ```"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Execute the above scenario again with the following changes:\n",
    "\n",
    "2. Select \"Create as .ipynb\"\n",
    "4. File should be named something like \"Untitled-1.ipynb\".\n",
    "\n",
    "(new steps)\n",
    "\n",
    "9. The contents should look like this:\n",
    "\n",
    "``` json\n",
    "{\n",
    " \"cells\": [\n",
    "  {\n",
    "   \"cell_type\": \"code\",\n",
    "   \"execution_count\": 1,\n",
    "   \"metadata\": {\n",
    "    \"dotnet_interactive\": {\n",
    "     \"language\": \"fsharp\"\n",
    "    },\n",
    "    \"polyglot_notebook\": {\n",
    "     \"kernelName\": \"fsharp\"\n",
    "    }\n",
    "   },\n",
    "   \"outputs\": [\n",
    "    {\n",
    "     \"data\": {\n",
    "      \"text/html\": [\n",
    "       \"<div class=\\\"dni-plaintext\\\"><pre>2</pre></div><style>\\r\\n\",\n",
    "       \".dni-code-hint {\\r\\n\",\n",
    "       \"    font-style: italic;\\r\\n\",\n",
    "       \"    overflow: hidden;\\r\\n\",\n",
    "       \"    white-space: nowrap;\\r\\n\",\n",
    "       \"}\\r\\n\",\n",
    "       \".dni-treeview {\\r\\n\",\n",
    "       \"    white-space: nowrap;\\r\\n\",\n",
    "       \"}\\r\\n\",\n",
    "       \".dni-treeview td {\\r\\n\",\n",
    "       \"    vertical-align: top;\\r\\n\",\n",
    "       \"    text-align: start;\\r\\n\",\n",
    "       \"}\\r\\n\",\n",
    "       \"details.dni-treeview {\\r\\n\",\n",
    "       \"    padding-left: 1em;\\r\\n\",\n",
    "       \"}\\r\\n\",\n",
    "       \"table td {\\r\\n\",\n",
    "       \"    text-align: start;\\r\\n\",\n",
    "       \"}\\r\\n\",\n",
    "       \"table tr { \\r\\n\",\n",
    "       \"    vertical-align: top; \\r\\n\",\n",
    "       \"    margin: 0em 0px;\\r\\n\",\n",
    "       \"}\\r\\n\",\n",
    "       \"table tr td pre \\r\\n\",\n",
    "       \"{ \\r\\n\",\n",
    "       \"    vertical-align: top !important; \\r\\n\",\n",
    "       \"    margin: 0em 0px !important;\\r\\n\",\n",
    "       \"} \\r\\n\",\n",
    "       \"table th {\\r\\n\",\n",
    "       \"    text-align: start;\\r\\n\",\n",
    "       \"}\\r\\n\",\n",
    "       \"</style>\"\n",
    "      ]\n",
    "     },\n",
    "     \"metadata\": {},\n",
    "     \"output_type\": \"display_data\"\n",
    "    }\n",
    "   ],\n",
    "   \"source\": [\n",
    "    \"1+1\"\n",
    "   ]\n",
    "  }\n",
    " ],\n",
    " \"metadata\": {\n",
    "  \"kernelspec\": {\n",
    "   \"display_name\": \".NET (F#)\",\n",
    "   \"language\": \"F#\",\n",
    "   \"name\": \".net-fsharp\"\n",
    "  },\n",
    "  \"polyglot_notebook\": {\n",
    "   \"kernelInfo\": {\n",
    "    \"defaultKernelName\": \"fsharp\",\n",
    "    \"items\": [\n",
    "     {\n",
    "      \"aliases\": [\n",
    "       \"f#\",\n",
    "       \"F#\"\n",
    "      ],\n",
    "      \"languageName\": \"F#\",\n",
    "      \"name\": \"fsharp\"\n",
    "     },\n",
    "     {\n",
    "      \"aliases\": [\n",
    "       \"frontend\"\n",
    "      ],\n",
    "      \"languageName\": null,\n",
    "      \"name\": \"vscode\"\n",
    "     }\n",
    "    ]\n",
    "   }\n",
    "  }\n",
    " },\n",
    " \"nbformat\": 4,\n",
    " \"nbformat_minor\": 2\n",
    "}\n",
    "```"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Open the two previously saved notebooks via the following:\n",
    "\n",
    "1. `Ctrl+Shift+P` => \"Polyglot Notebook: Open notebook\"\n",
    "2. Select the \"Untitled-1.dib\"/\"Untitled-1.ipynb\" from before.\n",
    "3. Verify that it contains a single F# cell with the contents \"1+1\" and that it can execute."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test adding cell to notebook (VSCode only)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e4aa1b42",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "using Microsoft.DotNet.Interactive;\n",
    "using Microsoft.DotNet.Interactive.Commands;\n",
    "\n",
    "var _ = Kernel.Root.SendAsync(new SendEditableCode(\"fsharp\",\"#!share --from csharp x\\nx\"));"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The code below will add 2 markdown cells"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ec7b7c44",
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "using Microsoft.DotNet.Interactive;\n",
    "using Microsoft.DotNet.Interactive.Commands;\n",
    "\n",
    "for(var i = 0; i<2;i++){\n",
    "    var _ = await Kernel.Root.SendAsync(new SendEditableCode(\"markdown\",$\"# markdown cell {i}\"));\n",
    "}   "
   ]
  }
 ],
 "metadata": {
  "kernelInfo": {
   "defaultKernelName": null,
   "items": [
    {
     "aliases": [
      "c#",
      "cs"
     ],
     "languageName": "C#",
     "name": "csharp"
    },
    {
     "aliases": [
      "f#",
      "fs"
     ],
     "languageName": "F#",
     "name": "fsharp"
    },
    {
     "languageName": "HTML",
     "name": "html"
    },
    {
     "languageName": "HTTP",
     "name": "http"
    },
    {
     "aliases": [
      "js"
     ],
     "languageName": "JavaScript",
     "name": "javascript"
    },
    {
     "languageName": "KQL",
     "name": "kql"
    },
    {
     "languageName": "Mermaid",
     "name": "mermaid"
    },
    {
     "aliases": [
      "powershell"
     ],
     "languageName": "PowerShell",
     "name": "pwsh"
    },
    {
     "languageName": "SQL",
     "name": "sql"
    },
    {
     "name": "value"
    }
   ]
  },
  "kernelspec": {
   "display_name": ".NET (C#)",
   "language": "C#",
   "name": ".net-csharp"
  },
  "language_info": {
   "name": "csharp"
  },
  "polyglot_notebook": {
   "kernelInfo": {
    "defaultKernelName": "csharp",
    "items": [
     {
      "aliases": [],
      "name": "csharp"
     }
    ]
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
